package com.czm.art_light.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.czm.art_light.entity.ArtArtist;
import com.czm.art_light.param.request.ArtArtistReqDto;
import com.czm.art_light.param.request.ArtSearchReqDto;
import com.czm.art_light.param.response.ArtArtistBasicInfoRespDto;
import com.czm.art_light.param.response.ArtArtistEsRespDto;
import com.czm.art_light.param.response.ArtWorkBasicInfoRespDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;

/**
 * 艺术家信息 Mapper 接口
 */
@Mapper
public interface ArtArtistMapper {
    /**
     * 根据艺术家id查找对应的艺术家信息
     */
    ArtArtist getById(@Param("id") Integer id);

    /**
     * 根据艺术家id查找对应的艺术家基本信息
     */
    ArtArtistBasicInfoRespDto artistBasicInfogetById(@Param("id") Integer id);


    /**
     * 分页查询艺术家列表
     * 获取所有的艺术家信息(根据艺术话题的ID或者作品类别的ID或者作品所属的流派的ID)
     */
    List<ArtArtistBasicInfoRespDto> selectAllWithTotal(@Param("page") Page<ArtArtistBasicInfoRespDto> page, @Param("dto") ArtArtistReqDto artArtistReqDto);

    /**
     * 查询所有艺术家列表（不分页）
     */
    List<ArtArtist> selectAllWithoutPage();

    /**
     * 根据关键字对作家名称进行模糊查询
     */
    List<ArtArtistBasicInfoRespDto> selectByNameLike(Page<ArtSearchReqDto> page, ArtSearchReqDto artSearchReqDto);

    /**
     * 查询所有的艺术家
     */
    List<ArtArtistBasicInfoRespDto> selectAll();

    /**
     * 查询自指定时间以来新增或修改的艺术家数据
     */
    List<ArtArtistEsRespDto> selectModifiedArtists(LocalDateTime lastSyncTime);
}
